Programming and diagnostic tool for a mobile robot

ABSTRACT

A method of communicating with a robotic device and associated system enables configuration information and diagnostic information to be communicated between the robotic device and a configuration tool. The method consists of using a configuration tool, such as a hand-held device, that can communicate information to the robotic device to program the device to carry out a specific task or function. The configuration tool can also be configured to retrieve diagnostic information from a robotic device, and communicate this information to an analysis tool.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to and the benefit of U.S. provisional patent application Ser. No. 60/582,531, filed Jun. 24, 2004, the disclosure of which is being incorporated herein by reference in its entirety. This application is related to U.S. patent application Docket No. IRO-018, entitled “Remote Control Scheduler and Method for Autonomous Robotic Device,” and filed of even date herewith, the disclosure of which is being incorporated herein by reference in its entirety.

FIELD OF THE INVENTION

The present invention relates generally to the field of robotics including the control of an autonomous robotic device and, more particularly, to a configuration tool and associated method for communicating configuration and diagnostic information with an autonomous robotic device, such as a cleaning robot.

BACKGROUND OF THE INVENTION

Robotic cleaning devices can be used to clean a defined area based on a program stored in the robot's processor. The purpose of these devices is to clean efficiently a room without the need for a user to physically control the cleaning device, or even be in the room when the floor is being cleaned. This can effectively reduce the time necessary for household chores, reduce noise pollution by enabling a room to be cleaned without the need for a user to be present, or enable an elderly or disabled person to clean a room which would otherwise be difficult or impossible to achieve without aid.

In general, these devices are programmed in the factory and their operation and functionality are based on a program hardwired into a chip installed in the robotic device. In order to change operation or the functionality of such a device, the robotic device would need to be taken apart and the masked chip program replaced by installing a new chip with an updated program. This can increase development time, as the software may need to be completed well before the mechanical design and construction is completed. This can also limit the utility of a robotic device, as the operation and functionality of the device can not easily be changed once the construction of the device is complete.

From the foregoing, there is a need for a method and apparatus to allow the operation and functionality of an autonomous robotic device, such as a robotic cleaning device, to be changed or upgraded at any time, without the need to return the device to the factory or install new hardware. It is also desirable to provide a portable apparatus that can load new configuration applications into the robotic device and also upload diagnostic information from the robotic device, to improve the utility, efficiency and usability of the robotic device.

SUMMARY OF THE INVENTION

The invention provides a method and apparatus for configuring a robotic device to operate according to a program pre-installed in the apparatus. The method and apparatus allows the functionality of a robotic device to be updated or changed according to the requirements of a user. The apparatus can also be used to obtain diagnostic information from the robotic device. One or more implementations of the invention may provide one or more of the following features.

One embodiment of the invention includes a method for communicating with a robotic device. The method includes the steps of linking a configuration tool to the robotic device, authenticating the configuration tool, and at least one of loading, via the configuration tool, information into the robotic device and loading into the configuration tool information from the robotic device. The executed loading step is typically carried out after successful authentication of the configuration tool.

In one embodiment of the invention, the robotic device supplies power to the configuration tool. In an alternative embodiment, the configuration tool can be powered by an internal power source located within, or attached to, the configuration tool, or by a remote power source linked to the configuration tool. The link between the configuration tool and the robotic device can include at least one of a communication port, a wireless connection, and a physical connection. In certain embodiments, the physical connection can include a verification attribute.

In various embodiments of the invention, the step of authenticating the configuration tool can include at least one of identifying an authorization code included in the information, exchanging at least one predetermined message between the robotic device and the configuration tool, receiving configuration information from the robotic device, issuing an unlock command, or interconnecting a verification attribute and the robotic device. The predetermined message can include a message sent by the robotic device and a message sent by the configuration tool. The configuration information can include processor type. The unlock command can permit use of the communication port.

In one embodiment of the invention, the executed loading step occurs only during a limited validity lifetime. The limited validity lifetime can be based at least in part on at least one of an elapsed time from authentication, a number of authentications, or a frequency of authentications. In certain embodiments of the invention, the configuration tool can include a user interface.

In various embodiments of the invention, the information being loaded into or from the robotic device can include at least one of operational data or at least part of a computer program. The operational data can include at least one of motor current or a sensor threshold value. In one embodiment of the invention, at least part of the information can be encrypted. In this embodiment, the method can further include the step of decrypting, by the robotic device, the information. In one embodiment of the invention, the information to be loaded into the robotic device is dependent upon information received from the robotic device.

One embodiment of the invention can include an apparatus for communicating with a robotic device. The apparatus can include a memory for storing information, at least one port for communicating with the robotic device, at least one authenticator for authenticating the apparatus, and at least one loader for communicating, via the at least one port, at least part of the information. At least part of the information can consist of at least one of information loaded from the apparatus into the robotic device and information loaded from the robotic device into the apparatus.

In one embodiment of the invention, the robotic device can supply power to the apparatus. In an alternative embodiment, the configuration tool can be powered by an internal power source located within, or attached to, the configuration tool, or by a remote power source linked to the configuration tool. In certain embodiments of the invention, the apparatus can include a user interface.

In one embodiment of the invention, the at least one port can include at least one of a wireless connection and a physical connection, wherein the physical connection can allow the configuration tool to either link directly to another device or connect through a cable to another device. In certain embodiments, the physical connection can include a verification attribute.

In certain embodiments of the invention, the information can include at least one of an authorization code, at least one predetermined message, an unlock command, at least part of a computer program, or operational data. In one embodiment, the predetermined message can include a message sent by the robotic device and a message sent by the apparatus. In one embodiment, the unlock command can enable the at least one port. In one embodiment, the operational data can include at least one of motor current and a sensor threshold value.

In certain embodiments of the invention, the authenticator can include at least one of a receiver for receiving configuration information from the robotic device, and an interconnection between the verification attribute and the robotic device. In one embodiment, the configuration information can include processor type. In one embodiment, the at least one loader can include a limited validity lifetime. This limited validity lifetime can be based at least in part on at least one of an elapsed time from authentication, a number of authentications, and a frequency of authentications.

In certain embodiments of the invention, the information can be encrypted. The apparatus can further include a decrypter for decrypting the information within the robotic device. In one embodiment of the invention, the information to be loaded into the robotic device is dependent upon information received from the robotic device.

BRIEF DESCRIPTION OF THE DRAWINGS

The objects and features of the invention can be better understood with reference to the drawings described below, and the claims. The drawings are not necessarily to scale, emphasis instead generally being placed upon illustrating the principles of the invention. In the drawings, like numerals are used to indicate like parts throughout the various views.

FIG. 1 is a block diagram showing one configuration of the configuration tool and robotic device system, in accordance with one embodiment of the invention.

FIG. 2 is a schematic top view of a configuration tool, in accordance with one embodiment of the invention.

FIG. 3 is a block diagram of a power regulator for the configuration tool of FIG. 2.

FIG. 4 is a block diagram of a microprocessor for the configuration tool of FIG. 2.

FIG. 5A is a schematic diagram illustrating a configuration tool in direct physical communication with a robotic device, in accordance with one embodiment of the invention.

FIG. 5B is a schematic diagram illustrating a configuration tool in communication, through a communication port and cable, with a robotic device, in accordance with one embodiment of the invention.

FIG. 5C is a schematic diagram illustrating a configuration tool in wireless communication with a robotic device, in accordance with one embodiment of the invention.

FIG. 6 is a block diagram depicting one method for implementing and using a system including a robotic device and a configuration tool, in accordance with one embodiment of the invention.

DETAILED DESCRIPTION

The invention provides a method and apparatus for communicating information to, or receiving information from, a robotic device. The apparatus can be used to load configuration information into a robotic device, allowing the functionality of the robotic device to be easily updated or changed by a user. The robotic device can therefore be reprogrammed to carry out a new task required by a user, or be updated to improve the functionality of an existing task. The apparatus can further be used to obtain diagnostic information from a robotic device, allowing an engineer or user to carry out system diagnostics on the device.

FIG. 1 is a block diagram showing one embodiment 10 of a configuration tool 12 for use with a robotic device. In this embodiment, the configuration tool 12 is adapted and configured to communicate information to, and receive information from, a robotic device or other communication or analysis device. This information can include, but is not limited to, configuration information 14 and diagnostic information 16.

The configuration tool 12 is adapted such that it can communicate with a number of devices, including, but not limited to, a mobile robotic device 18, a stationary robotic device 20, a communication device 22, and an analysis device 24. The mobile robotic device 18 can, for example, be a cleaning robot such as the Roomba® brand robotic floor vacuum and sweeper available from iRobot Corporation, Burlington, Mass. The stationary robotic device 20 can, for example, be a portable barrier signal transmitter designed to send an IR beam along a designated path to confine travel of the mobile robotic device 18. The stationary robotic device 20 could also be a docking station, home-base, or charging device for use with the mobile robotic device 18.

A communication device 22, such as, but not limited to, a mobile phone, remote control device, or personal digital assistant (PDA), can be connected to the configuration tool 12. The communication device can be used to install configuration information 14, or other programming information to be loaded into a robotic device into a configuration tool 12. The communication device 22 can also be used to retrieve diagnostic information 16, or other appropriate information, which has been communicated from a robotic device to the configuration tool 12. This diagnostic information 16 can then be stored within the communication device 22 and transferred to an analysis device 24 for further analysis, or be used to analyze diagnostic information 16 directly. The communication device 22 can also be a scheduling device and/or remote controller for use with a mobile 18 and/or stationary 20 robotic device. The configuration tool 12 can then also be used to install or upgrade an application program in the scheduling device and/or remote controller.

The analysis device 24 can be, but is not limited to, a PC, laptop, or other appropriate device for storing and analyzing information. Connecting the configuration tool 12 to an analysis device 24 allows configuration information 14 to be installed in the configuration tool 12 by the analysis device 24, or allows the configuration tool 12 to install information, such as, but not limited to, an analysis, scheduling or control program, to enable the analysis device 24 to be used in conjunction with mobile 18 and/or stationary 20 robotic devices. The configuration tool 12 can also be used to download diagnostic information 16 from a robotic device, or other device, for analysis by the analysis device 24.

The configuration information 14 can include information for initially programming a robotic device in the factory, or upgrading the existing capabilities of a robotic device or reprogramming the device to carry out new tasks in the factory or in the field. This upgrading information can include, but is not limited to, new versions of the software installed in the robotic device, special programs to adapt the functionality of the robotic device for a specific task, scheduling programs to allow the robotic device to run automatically without further user input, and programs to allow the robotic device to send information to a communication device such as a remote control or scheduling tool (either prompted by the user or automatically upon the occurrence of a certain event). Further upgrading or reprogramming information can include programs and applications allowing a mobile robotic device 18 to carry out completely new tasks (such as, but not limited to, functioning as a toy, a security device, or a searching device for lost objects) or “learning” programs and applications allowing the robotic device to adapt its own programming based on information gained through carrying out specified tasks. These learning programs can, for example, allow the mobile robotic device 18 to map out a room and remember where the objects and obstacles in the room are placed, or adapt a scheduling program based on prior patterns of user behavior or environmental conditions.

In one embodiment 10, the configuration tool 12 can communicate with a device through a direct physical connection. For this direct communication, a male connector (e.g. DIN connector, USB, serial port or other appropriate connection element) on one mates directly with a female connector on the other. In an alternative embodiment, the direct communication can include a docking station on the robotic device or attached to the communication or analysis device, such that the configuration tool 12 can be removeably attached directly to the device. In certain embodiments, the physical connection between the configuration tool 12 and a device can include a verification attribute based on software, hardware, or physical geometry of the connections.

In an alternative embodiment, the communicated information could be sent through communication ports linked by a cable (for example a USB or serial port link). In a further alternative embodiment of the device, the configuration information 14 and diagnostic information 16 can be sent through a wireless connection with a device, with the information sent by infrared (IR), radio frequency (RF), or other appropriate signal. In another alternative embodiment, configuration information 14 can be embedded in a charging device or docking station, used for charging and recharging the batteries of a mobile robotic device 18 (see U.S. patent application Ser. No. 10/762,219, filed Jan. 21, 2004, the disclosure of which is incorporated herein by reference in its entirety). This configuration information 14 can then be communicated to a mobile robotic device 18 when it “docks” with the charging device. The link between the mobile robotic device 18 and the charging device can be either a wireless link, such as an IR communication link, or direct link, such as between a male port on the charger and a female port on the mobile robotic device 18. Communication between the mobile robotic device 18 and a charger could also be achieved though the physical contact used to link the devices for recharging the batteries of the mobile robotic device 18, or though a separate physical contact. In an example embodiment, information could be carried through a power charge line for the docking station or charger, or other appropriate network connection, allowing the robot to link to an information network whenever it docks with a charging device. Thus configuration information 14 and diagnostic information 16 could easily be transferred whenever a mobile robotic device 18 is docked.

In certain embodiments of the invention, the link between the device and the configuration tool 12 can also be used to supply power to the configuration tool 12. For example, battery power used to power a mobile robotic device 18 or a stationary robotic device 20 can also be used to power a configuration tool 12, once a link between the device and the configuration tool 12 has been established. Allowing the configuration tool 12 to be powered by a device linked to the configuration tool 12 can minimize the size and weight of the configuration tool 12, as the configuration tool 12 in this embodiment does not require a battery or other source of power to be installed within the configuration tool 12 itself.

In alternative embodiments of the invention, the configuration tool 12 can be adapted to be powered by an internal battery, either removable or non-removable, or by a separate power source connected externally to the configuration tool 12, such as a power adaptor connecting the configuration tool to a mains power source. In some embodiments of the invention, the device for use with the configuration tool 12 can require a DIN connector, or other appropriate physical connection, and a flash memory that allows information to be communicated, and/or programs to be stored, even in the absence of power.

Prior to communicating information between a configuration tool 12 and a device, the configuration tool 12 can be required to be authenticated by the device. Requiring an authentication between the configuration tool 12 and the device can, for example, improve the security of the device, stop non-approved or potentially damaging information being communicated to the device, or provide appropriate instructions to the device prior to information being transferred.

Authentication of the configuration tool 12 can be carried out in a number of different ways. For example, upon a link being formed between a configuration tool 12 and a device, the configuration tool 12 can send an authorization code to the device, and only if a recognized authorization code is received will the device enable the loading of information between the device and configuration tool 12. Alternatively, at least one predetermined message can be exchanged between the device and configuration tool 12, and only upon receipt of the predetermined message from both, or either, the device and the configuration tool 12 will further communication be permitted.

In further embodiments of the invention, authentication information sent between a configuration tool 12 and a device can include configuration information, such as, but not limited to, the type of processor for that device or configuration tool 12 or the form of the information to be communicated. Alternatively or additionally, the authentication information can include at least part of a computer program. The computer program can be used, for example, to enable further communication between the device, or configure the device to receive or send information. Authentication information may also include an unlock command, which can permit use of a communication port on the device and enable the port to allow further communication between the configuration tool 12 and the device.

In certain configurations, a verification attribute can be interconnected through the link between the configuration tool 12 and a device. This verification attribute can include for example, an authorization code, at least one predetermined message, an unlock command, at least part of a computer program, and/or operational data. The operational data can include, but is not limited to, power information (such as the motor current) and a threshold value for a sensor or other component of the device or configuration tool 12. The unlock command can be used, for example, to enable a communication port on the device to communicate information.

In certain embodiments, the configuration tool 12 can include an authenticator. This authenticator can include at least one receiver to receive authentication and/or configuration information and can, in some embodiments, further include a transmitter to communicate authentication and/or configuration information to a device linked to the configuration tool 12. The authenticator can further include an interconnection between the device and a verification attribute of the configuration tool 12.

The configuration tool 12 can, in certain embodiments of the invention, be constructed or programmed such that the configuration tool 12 only works within a limited validity lifetime. This limited validity lifetime can be based on the elapsed time from authentication, the number of authentications, or the frequency of authentications. The introduction of a limited validity lifetime can be useful, for example, in controlling the dissemination of configuration information and limiting the unauthorized use of the configuration tool 12.

In certain embodiments of the invention, the information communicated between the configuration tool 12 and a device can be encrypted. In such embodiments, a means of decrypting the communicated information, such as, but not limited to, a decrypter or a decrypting algorithm, may be required to be installed in the device. Encrypting the information can prevent an unauthorized third party from copying the information to be communicated, preventing the unauthorized party from making duplicate copies of the full software and electronics of a robotic system. In certain embodiments, the configuration information 14 is encrypted prior to being installed in the configuration tool 12, and is downloaded into a device in encrypted form. The configuration information 14 can then only be decrypted by a device with the appropriate decryption algorithm and code installed, preventing an unauthorized user from viewing the un-encrypted information 14. This encryption can be important in preventing a third party from making unauthorized use of, and unauthorized copies of, a commercially developed robotic product.

In an example embodiment, the decryption algorithm and code installed in a device can be protected from being read by features of the device's microcontroller, without limiting the functionality of the device. As such, control or other information within a robotic device can be updated and/or overwritten without a user being able to read the information itself. This allows updated or new configuration information 14 to be distributed without allowing access to the information by an unauthorized user. The encryption algorithm could include, but is not limited to, shared secret key encryption such as in a Tiny Encryption Algorithm (TEA), or other appropriate means of encrypting and decrypting information.

In one embodiment of the invention, a first configuration tool can be used in the factory to load a program into the flash memory of a robotic device. The microprocessor chip in the robotic device can contain at least a bootloader program. Programming information related to the operation of the robot, such as, but not limited to, complex behavior language and control parameters can be loaded from this configuration tool. In certain embodiments, by installing a bootloader program in a robotic device, encrypted information can be stored directly into a configuration tool 12 and uploaded into the robotic device, where it is decrypted by the appropriate encryption key imbedded in the bootloader. This can, for example, reduce the chance of encrypted information being accessed and decrypted by an unauthorized user, as the decryption key is not installed in the configuration tool 12 but only in the bootloader of an authorized robotic device, or other authorized device.

In certain embodiments, this same configuration tool used to load the complex programming behavior can also contain a diagnostic program used for a factory test of the robotic device prior to shipping to a user. This diagnostic program may involve a simple algorithm to provide basic diagnostic information, although in alternative embodiments a more extensive program could be installed for increased diagnostic capabilities.

A diagnostic program can also be communicated to the device through a separate, second configuration tool that may be used in the factory to initiate a quality control check of the robotic device's systems. The I/O port on the robotic device can send signals related to such aspects as, but not limited to, some or all of the robotic device's systems and various values that can detect whether all systems of the robotic device are in full working order. In one particular embodiment, the diagnostic program can be configured to run while a diagnostic device initiates various sensors on the robotic device simultaneously or sequentially.

In certain embodiments, the configuration tool 12 could download or upload different information based on what signal or information is received from the robot. In an example embodiment, customized configuration information 14, such as, but not limited to, a customized control algorithm, could be computed in the configuration tool 12 based on usage information collected from a robotic device. The configuration tool 12 then only downloads information specific to the connected device.

FIG. 2 shows a schematic top view of a configuration tool 30, in accordance with one embodiment of the invention. The configuration tool includes a connector 32, such as a DIN connector, serial port connector, parallel port connector, USB port connector, IEEE 1394 “Firewire” port connector, PS/2 port connector, modem port connector, Ethernet network port connector, or other appropriate communication port connector. The connector 32 can be a male connector, allowing the configuration tool 30 to make a direct physical connection with an I/O port on a device, or a female connector port, allowing the configuration tool 30 to connect to a device through a cable connection linking the female ports on both the configuration tool 30 and a device to be communicated with. In an alternative embodiment of the invention, the connector 32 can be a wireless connector, allowing the configuration tool 30 to communicate with a device through an infrared (IR) signal or other appropriate wireless signal.

The connector 32 can enable information to be communicated between the configuration tool 30 and a linked device. In certain embodiments, the connector 32 may also allow power to be transferred from the linked device to the configuration tool 30 to power at least one function of the configuration tool 30. A power regulator 34 within the configuration tool 30 can be utilized to convert the power from the linked device to the correct voltage for powering the configuration tool 30. In alternative embodiments of the invention, an internal power source, such as a battery, may be used instead of, or in conjunction with, power drawn from the linked device. In a further alternative embodiment, the configuration tool 30 could be linked to an external power source, such as, but not limited to, a mains power source, to power the configuration tool 30. In yet another embodiment, power from the configuration tool 30 could be used to power at least one function of the linked device.

Power from the linked device, once it has been converted by the power regulator 34, can be used to drive certain installed hardware, functions, user inputs, and other components installed in the configuration tool 30. In the embodiment of FIG. 2, these include a microprocessor 36, a user input 38, and a number of LEDs 40. The components are installed within a housing 42, that can be of any appropriate shape and can, for example, be shaped to be held easily with a user's hand. The size and shape of the device can be varied depending upon the requirements of the system, and can for example be minimized to lower costs and improve portability and functionality.

The microprocessor 36 can be used to store configuration information to be installed in an appropriate device, store diagnostic information received from a device, store information required for authenticating a link between the configuration tool 30 and a linked device, and control the functions and user inputs and outputs of the configuration tool 30. The microprocessor 36 can, in some embodiments, trigger authentication and transfer of information automatically upon detection of an appropriate device, while in other embodiments the microprocessor 36 can be configured to require a user input or other signal from either the configuration tool 30 or the linked device before information is transferred between the configuration tool 30 and the linked device.

In certain embodiments of the invention, programming and/or configuration information, and data, can be stored in a flash-based microcontroller, or in flash memory attached to the microcontroller 36, within the configuration tool 30. In alternative embodiments of the invention, the a configuration tool 30 could be replaced by an audio CD, MP3, cassette, or other appropriate audio player. In this embodiment, a dongle may serve as an interface between the audio output of a CD player (headphone jack) and the robot, allowing the CD player to download and distribute information that is stored on a disc inserted in the player. Information can be stored on the CD, or other media storage device, in the form of encrypted audio tones using for example, but not limited to, frequency-shift or phase-shift modulation as used in standard telephone modems. Different information could be stored as separate tracks on the CD, or other appropriate media storage device, allowing a user to choose the data to be transferred based on a choice of track on the audio player.

The user input device 38 can be, but is not limited to, at least one button, switch, joystick, touch sensitive pad, and/or roller-ball. The user input 38 can allow the configuration tool to load or receive information only upon initiation by a user, rather than the information being communicated automatically upon detection of a linked device. In certain embodiments, a number of user inputs 38 may be installed in the configuration tool 30. In the case of multiple user inputs 38, each separate input 38 could be configured to control a different function of the configuration tool 30. For example, a separate button may be installed to control an uploading or downloading of a configuration program, an uploading or downloading of diagnostic information, and an authentication function. In an alternative embodiment, a single user input 38 could be configured to control more than one function of the configuration tool 30, based on the manner of the user's interaction with the user input 38. For example, a single button can control a number of separate functions based on the number of times, and/or the length of time, the button is depressed. However, as previously mentioned, in certain embodiments no user input is required, and information can be transferred automatically upon the establishment of a link between the configuration tool and a device.

Feedback to the user could be provided by a visual or audio signal upon a certain event or function being carried out. This could involve at least one light, audio speaker, LCD screen, or any other known device. In the example embodiment of FIG. 2, a set of three colored LEDs 40 are installed in the configuration tool 30 to alert the user to certain events being performed or completed. In this example embodiment, the configuration tool 30 includes three LEDs 40 of different color: one green, one yellow, and one red. A steady green light could indicate that the configuration tool 30 is powered and in communication with the linked device; a flashing green light could represent a successful and complete download of a program or instructions; a flashing yellow light could indicate that the system is busy working; and a red light could indicate an unsuccessful loading. In alternative embodiments, the separate LEDs can indicate different events, or be used in conjunction with, or even replaced by, a speaker or number of speakers to provide audio signals to a user.

In one embodiment of the invention, the configuration tool 30 can be configured to provide a visual or audio signal upon the completion of a transfer of configuration or scheduling information. In an alternative embodiment, the configuration information can be designed to allow the linked device to provide a visual or audio signal upon the successful completion of an information transfer. For example, a robotic device can be configured to illuminate a status light if and when a scheduling program is stored in the memory.

Alternatively or additionally, the configuration tool 30 can be used to download additional or different sounds into a robotic device. These sounds could include, but are not limited to, melodies, ring-tones, speech, warning and alert tones, or other appropriate sounds. These additional or different sounds could allow a user to personalize a mobile robot, or provide appropriate audio responses to a new or updated function of the robotic device.

In an alternative embodiment of the invention, the configuration tool 30 may include a display, such as, but not limited to, an LCD display, to allow the configuration tool 30 to display more complex information regarding the configuration tool 30 and its use. This information can for example include the type and number of configuration programs installed in the configuration tool 30, the type of diagnostic information stored in the configuration tool 30, and status information while the configuration tool 30 is linked to another device. In alternative embodiments of the invention, the display could also be configured to display information received from a device, such as options for the type of configuration information that can be communicated, the type of diagnostic information to be communicated, or the form of authentication required before communicating with a device.

FIG. 3 is a block diagram of a power regulator configuration 50 for the configuration tool 30. The power regulator configuration 50 includes the regulator 34 that can take power from the device, for example a mobile robotic device, at one voltage, for example a 16 volt signal 52, and convert it to a different voltage, for example a 5 volt signal 56, for powering the operation of the configuration tool 30. In one embodiment of the invention, the configuration tool 30 itself does not contain an internal power element and is powered by the device to which it is attached. In an alternative embodiment, the configuration tool 30 may also include an internal power source that works instead of, or in conjunction with, power from the device to which the configuration tool 30 is connected. For example, the configuration tool 30 could include a rechargeable battery that is recharged every time it is connected to an appropriate device.

FIG. 4 is a block diagram of a microprocessor configuration 60 for the configuration tool 30. The microprocessor configuration 60 includes the microprocessor 36 with a connection for allowing information to be communicated from the microprocessor 36 to a linked device (i.e., the “Comm Out” signal 66), and a separate connection to allow information to be communicated to the microprocessor 36 from a linked device (i.e., the “Comm In” signal 64). The microprocessor 36 can also include a separate connection for detecting and authenticating a device that is linked to the configuration tool (i.e., the “Device Detect” signal 62). In an alternative embodiment, these three signals could be carried through a single connection.

FIGS. 5A-5C show various means of linking a configuration tool with a device, such as, but not limited to, a stationary or mobile robotic device, a communication device, or an analysis device. In the system configuration 80 shown in FIG. 5A, a device 84 is linked to a configuration tool 82 through a direct connection 86. This direct connection can consist of a male connection port on the configuration tool 82, that mates directly to a female connection port on the device 84. The port can be a DIN connector, serial port, parallel port, USB port, IEEE 1394 “Firewire” port, PS/2 port, modem port, Ethernet network port, or other appropriate communication port. In one embodiment of the invention, the male connection port on the configuration tool 82 can retract or fold into the configuration tool 82 when not in use.

In this system, configuration information can be communicated from the configuration tool 82 to the device 84, or from the device 84 to the configuration tool 82, while diagnostic information such as, but not limited to, system information, stored program information, status reports and error reports can also be communicated between the configuration tool 82 and the device 84.

In the system configuration 100 shown in FIG. 5B, the device 84 is linked to the configuration tool 82 through a cable 104. The cable 104 connects both devices through communication ports located on each device. In one embodiment of this system configuration 100, the cable connection 104 can be used to quickly communicate configuration and/or diagnostic information between the configuration tool 82 through a cable 104. Again, the communication ports can be a DIN connectors, serial ports, parallel ports, USB ports, IEEE 1394 “Firewire” ports, PS/2 ports, modem ports, Ethernet network ports, or other appropriate communication ports.

In the system configuration 120 shown in FIG. 5C, the configuration tool 82 is configured to communicate through a wireless connection with the device 84. In one embodiment, the wireless link consists of an IR signal 122, which can be sent from the configuration tool 82 to the device 84, as indicated by the arrows 124. In this configuration, further IR signals 122 can be sent from the device 84 to the configuration tool 82, again as indicated by the arrows 124. Again, this system configuration 120 can be used to load configuration information from a configuration tool 82 into a device 84, or from a device 84 to the configuration tool 82, while diagnostic information can also travel in both directions between the configuration tool 82 and the device 84.

In alternative embodiments, the configuration tool 82 can communicate information to a single device 84, that can then send the communicated information to further devices directly, without the need for additional linking to the configuration tool 82. In this configuration, multiple devices 84, such as, but not limited to, a single or a series of mobile robotic device(s) and stationary device(s), can be configured sequentially through a link with only a single device.

In further alternative embodiments, a configuration tool 82 could be used to extract information from one device 84 and then download this information into a new or additional device. This could allow a new or replacement robotic device to upload information gathered by a previous device, without the need for this information to be “learned” or programmed into the new device independently. In an example embodiment, a new robotic cleaning device could upload, from the configuration tool 82, geometrical and other information regarding the space to be cleaned that had been gathered by the robotic device it is replacing. In an alternative embodiment, an additional device could upload, from the configuration tool 82, information from the other device allowing the two devices to function in parallel. A second robotic device with the uploaded information could also be used as a spare or back-up device.

FIG. 6 shows a block diagram featuring one method 140 for implementing and using a system including a device and a configuration tool. According to this method 140, a single configuration tool can be used to communicate configuration information with the device, and load into and receive diagnostic information from the device.

The method 140 includes first linking 142 the configuration tool to the device, either through a wireless connection, communication port, or direct connection. Upon authentication of the link using an authenticator (e.g., by geometric configuration, hardware, or software based systems), the configuration tool is then ready to communicate 146 with the device. In certain embodiments of the invention, the authentication step 144 may be optional.

Once the device and configuration tool are ready, they begin to communicate 148. The configuration tool can be used to load information 150, such as, but not limited to, configuration information, diagnostic information, or control information, into the device, or receive such information 158 from the device. Depending on the requirements of the configuration tool and device, the configuration tool can be configured to either first load 150 or receive 158 information. In an alternative embodiment, it may be possible for the loading 150 and receiving 158 steps to be carried out concurrently.

When the loading step 150 is carried out first, upon completion of this step the configuration tool may have the option of then receiving information back from the device 152. At this point, the configuration tool can either receive information from the device 154, or end communication and allow the configuration tool to be disconnected 156.

When the receiving step 158 is carried out first, upon completion of this step the configuration tool may have the option of then loading information back into the device 160. At this point, the configuration tool can either load information into the device 162, or end communication and allow the configuration tool to be disconnected 156.

In certain embodiments of the invention, the configuration tool can be designed such that the steps of authenticating, loading and receiving information to and from the device is carried out automatically upon a link being established between the configuration tool and the device. In alternative embodiments, at least one of the authenticating, loading and receiving steps may require an input from a user before the step is carried out. This user input may be controlled through a user input device installed in the configuration tool or on the linked device. The user input may include, but not be limited to, at least one button, switch, joystick, touch sensitive pad, and a roller-ball.

In certain embodiments of the invention, an indicator may be used to inform a user of the start of, completion of, or failure to complete an authenticating, loading and/or receiving step. This indicator can include, but is not limited to, a visual indicator or an audio indicator on either the configuration tool or the device. The visual indicator may include, but is not limited to, a single or a number of status lights (such as LED lights), or an indication on a liquid crystal display (LCD) or other graphic interface. The audio indicator may include a predetermined signal sent from a speaker on either the configuration tool or device.

The use of a configuration tool to communicate configuration information to, and diagnostic information from, a robotic device can be useful in the development and manufacture of robotic devices. The application of a configuration tool can also provide a major improvement over the use of a masked chip program installed in a robotic device upon construction.

Firstly, by using a configuration tool to communicate information to the robotic device, the robotic device software can be updated at any time, allowing running changes to be made in the factory. Secondly, the system reduces the inventory risk and time to market, as a manufacturer would no longer have to produce a final software program months before the final mechanical designs are required to be completed. The application of this invention also means that a manufacturer would not take the risk that the developed software could contain a bug, resulting in the need for chip sets to be returned. Instead, the configuration tool allows an updated program to be installed in the robotic device whenever necessary. Thirdly, the configuration tool allows the possibility of having “customized” robotic devices, where the program controlling the robot can be changed to suit a particular market or user requirement. For example, all robots sent to Europe might have a different set of audio cues than the robots sent to the U.S. The changes could be aesthetic (e.g. audio) or performance based.

An example embodiment of the invention could include the feature of downloading via a configuration tool, a new program for data gathering in a user's home. For a robotic cleaning device, this may include data on mechanical systems such as, but not limited to, the current in the main sweeping brush motor, number of obstacle bumper hits, greatest straight line run distance, and the amount of collected debris detected. This data may be stored in system RAM and retrieved at a later date, by the same, or another, configuration tool. Analysis of this information could then be used in a future design and development of robotic cleaners.

The use of a configuration tool can also have a number of other uses in conjunction with the use of mobile robotic devices. For example, a configuration tool can be used to install configuration information and programs to enable a robotic device to interact with or attach to an external device or peripheral. Upon installation of updated configuration information, the robotic device can use its I/O port to allow peripherals to be connected to the robotic device. For example, a simple 802.11 communication system, or other appropriate communication device, could be added to allow a personal computer (PC) to communicate with a robotic device that does not include an installed wireless communication system. This system might initiate a function of the robotic device, such as a cleaning function, at a set time or even allow a user to initiate cleaning from a remote location using the Internet or other means of communicating remotely with the PC.

Alternatively, new sensors or other peripherals could be added to the robotic device to improve or change the functionality of the device. In one example embodiment, external devices, such as additional sensors, could be connected to a robotic device to allow it to act, for example, as an educational research robot, allowing information to be gathered by the robotic device and additional programs to be added to the device.

In certain embodiments of the invention, a configuration tool can be installed with different configuration programs to allow the configuration tool to change or enhance a performance characteristic of the robotic device. As a result, it may be possible to produce configuration tools as accessories that adjust the performance of a robotic device based on a particular requirement of a user or group of users. These change in performance characteristics might include, for example, advanced coverage algorithms to allow a robotic cleaner to better clean a specific area. Alternatively, it might be possible to change certain parameters in the existing program to tune performance for specific situations. For example, a user might purchase a configuration tool specifically directed towards programming a cleaning robot to clean hardwood floors. In another example embodiment, a user might purchase a configuration tool that changes the dirt detection parameters of a cleaning robot to make the dirt detection even more sensitive. Other possible configuration tools can be directed towards configuration programs for different rooms in a house or office, such as rooms without rugs, rooms with rugs, high traffic areas, etc. These various programs may, for example, adjust values including the way a robotic cleaner switches between various modes such as, but not limited to, spiraling, bouncing, and wall following, or adjusting the manner in which a robotic device reacts to certain sensor inputs such as, but not limited to, how long a robotic device should wait before reacting to a stasis sensor event, or how far from a wall should a robotic device be for wall following, etc. See, for example, U.S. Pat. No. 6,809,490 for typical operational modes, the disclosure of which is incorporated herein by reference in its entirety.

In certain embodiments of the invention, a configuration tool can be designed to be distributed with an updated, different, or replacement assembly that can be installed in a robotic device. For example, a cleaning head or brush assembly can be replaced in a cleaning robot with an assembly having different or enhanced capabilities, depending upon a users requirements. These assemblies could be provided with a configuration tool to allow the device with new assemblies to function in the preferred manner. In one example embodiment, a steel brush system, that can be used to scrub and sand hardwood decks, could be installed in a cleaning robot. For this system, the motor drivers and current monitoring system may possibly need to be changed if, for example, the assembly was gear rather than belt driven, and this would require a different set of motor current parameters.

Another example assembly that may be enabled using a configuration tool can include is a cleaning head designed for owners of long-haired animals. Yet another example embodiment may involve an improved battery system, such as a battery system enabling an faster charging system. This again could require a configuration tool to optimize the charging parameters.

A configuration program could also be installed in a robotic device, using the configuration tool, to enable a robotic device to perform a system demonstration, wherein the demonstration could cycle through the robotic device's various functions in rapid succession. In some embodiments the robotic device could be distributed with two configuration tools, one for configuring the robotic device to perform an out-of-box demonstration of its functions, and a separate configuration tool for installing diagnostic capabilities and configuring the robotic device for normal use. The user could learn about the system by using the demonstration configuration tool, and then install the program for normal use once the functions of the device have been learned. The demonstration configuration tool could also include an audio enabling function, that could use a digital voice to introduce and teach the various functions of the robotic device.

Some embodiments of the invention may have a designated maximum number of loads from a configuration tool, so that the program cannot be loaded on more than a certain number of devices. In one embodiment, a “watermark” can be introduced into the code to easily identify a robot that has stolen or corrupted software loaded in it. This may be achieved in a number of ways. In one embodiment, a certain combination of user inputs, such as a specific sequence of button hits, could unlock a hidden behavior, such as a special sequence of movements of a mobile robotic device, or possibly spelling out a symbol or word on the floor if a marker were to be attached to the bumper. In another example embodiment, a configuration tool or any other communication device connected to the serial port may be required to first issue a specific phrase and/or algorithm to unlock the serial port. Thus, unsupported software could not be installed in a robotic device without the use of this algorithm to open the communication link between the robotic device and a configuration tool.

The invention may be embodied in other specific forms without departing form the spirit or essential characteristics thereof. The foregoing embodiments, therefore, are to be considered in all respects illustrative rather than limiting the invention described herein. Scope of the invention is thus indicated by the appended claims, rather than by the foregoing description, and all changes that come within the meaning and range of equivalency of the claims are intended to be embraced therein. 

1. A method for communicating with a robotic device, the method comprising the steps of: linking a configuration tool to the robotic device; authenticating the configuration tool; and at least one of: loading, via the configuration tool, information into the robotic device; and loading into the configuration tool information from the robotic device, wherein the executed loading step is carried out after successful authentication of the configuration tool.
 2. The method of claim 1, wherein the robotic device supplies power to the configuration tool.
 3. The method of claim 1, wherein the link comprises at least one of a communication port, a wireless connection, and a physical connection.
 4. The method of claim 3, wherein the physical connection comprises a verification attribute.
 5. The method of claim 1, wherein the step of authenticating the configuration tool comprises at least one of identifying an authorization code included in the information, exchanging at least one predetermined message between the robotic device and the configuration tool, receiving configuration information from the robotic device, issuing an unlock command, and interconnecting a verification attribute and the robotic device.
 6. The method of claim 5, wherein the at least one predetermined message comprises a message sent by the robotic device and a message sent by the configuration tool.
 7. The method of claim 5 wherein the configuration information comprises processor type.
 8. The method of claim 5, wherein the unlock command permits use of the communication port.
 9. The method of claim 1, wherein the executed loading step occurs only during a limited validity lifetime.
 10. The method of claim 9, wherein the limited validity lifetime is based at least in part on at least one of an elapsed time from authentication, a number of authentications, and a frequency of authentications.
 11. The method of claim 1, wherein the configuration tool comprises a user interface.
 12. The method of claim 1, wherein the information comprises at least one of operational data, and at least part of a computer program.
 13. The method of claim 12, wherein the operational data comprises at least one of motor current and a sensor threshold value.
 14. The method of claim 1, wherein at least part of the information is encrypted.
 15. The method of claim 1, further comprising the step of decrypting, by the robotic device, the information.
 16. An apparatus for communicating with a robotic device, the apparatus comprising: a memory for storing information; at least one port for communicating with the robotic device; at least one authenticator for authenticating the apparatus; and at least one loader for communicating, via the at least one port, at least part of the information, wherein the at least part of the information consists of at least one of information loaded from the apparatus into the robotic device and information loaded from the robotic device into the apparatus.
 17. The apparatus of claim 16, wherein the robotic device supplies power to the apparatus.
 18. The apparatus of claim 16, wherein the at least one port comprises at least one of a wireless connection and a physical connection.
 19. The apparatus of claim 18, wherein the physical connection comprises a verification attribute.
 20. The apparatus of claim 16, wherein the information comprises at least one of an authorization code, at least one predetermined message, an unlock command, at least part of a computer program, and operational data.
 21. The apparatus of claim 20, wherein the at least one predetermined message comprises a message sent by the robotic device and a message sent by the apparatus.
 22. The apparatus of claim 20, wherein the unlock command enables the at least one port.
 23. The apparatus of claim 20, wherein the operational data comprises at least one of motor current and a sensor threshold value.
 24. The apparatus of claim 16, wherein the authenticator comprises at least one of a receiver for receiving configuration information from the robotic device, and an interconnection between the verification attribute and the robotic device.
 25. The apparatus of claim 24, wherein the configuration information comprises processor type.
 26. The apparatus of claim 16, wherein the at least one loader comprises a limited validity lifetime.
 27. The apparatus of claim 26, wherein the limited validity lifetime is based at least in part on at least one of an elapsed time from authentication, a number of authentications, and a frequency of authentications.
 28. The apparatus of claim 16, wherein the apparatus comprises a user interface.
 29. The apparatus of claim 16, wherein the information is encrypted.
 30. The apparatus of claim 29, further comprising a decrypter for decrypting the information within the robotic device. 